package educar.asignacion;

import java.sql.ResultSet;
import java.sql.SQLException;

import java.sql.PreparedStatement;

import educar.login.Session;
import educar.principal.IController;
import educar.principal.IView;
import educar.db.*;

public class AsignacionController{
	private static JPA jpa = new JPA();

	public static boolean existe (String dniDoc) {
		try {
			Asignacion asig = getAsignacion(dniDoc);
			return true;
		} catch (AsignacionNoEncontrado ex) {
			return false;
		}
	}

	/**
	 * Actualiza los datos de un registro en la tabla.
	 * @param column "Nombre de la columna"
	 * @param value "Valor que reemplaza al existente"
	 * @param id "Campo por el cual se identifica"
	 */
	public static void update(String column,String value, String id) {
		jpa.update("asignacion", column, value,"dni",id);
	}
	
	/**
	 * Este metodo nos permite agregar un nuevo registro en la tabla asignacion.
	 * @param asignacion
	 * @return
	 */
	public static boolean save(Asignacion asignacion) {
		try {
			getAsignacion(asignacion.getDniDoc());
			return false;
		} catch (AsignacionNoEncontrado e1) {
			String[] columns = { "docente_dni", "facultad_cod", "cargo_cod", "cantHoras" };

			PreparedStatement stm = jpa.newRecord(DbConnection.bd+".asignado", columns);

			try {
				stm.setString(1, asignacion.getDniDoc());
				stm.setString(2, asignacion.getCodFacultad());
				stm.setString(3, asignacion.getCodCargo());
				stm.setString(4, asignacion.getCantHoras());
				
			} catch (SQLException e) {
				e.printStackTrace();
				return false;
			}

			jpa.create(stm);
			return true;
		}
	}
	
	/**
	 * Con este metodo se elimina un registro de la tabla asignacion, que coincide
	 * con el codigo que se pasa como parametro.
	 * @param codigo
	 */
	public static void destroy(String codigo) {
		jpa.destroy("facultad", "codigo", codigo);
	}

	public static Asignacion getAsignacion(String dniDoc) throws AsignacionNoEncontrado {
		ResultSet rs = null;
		Asignacion asignacion = null;

		rs = jpa.getByField("asignado", "docente_dni", dniDoc);
		
		try {
			if (rs.next()) {
				asignacion = new Asignacion(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4));
			} else {
				throw new AsignacionNoEncontrado();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

		return asignacion;
	}

}
